<?php

	/* Traitement du flux de données */

	// Recuperation flux xml brocodeindex

	$fichier = "./brocode.xml";

	if (file_exists($fichier))
		$xml = simplexml_load_file($fichier);
	else
		exit('Echec lors de l\'ouverture du fichier '.$fichier.' !');
		
	
	// Recuperation des keys
	
	if ($xml)
		$keys = $xml->xpath('/brocode/article/@keys');
	else
		exit('Echec lors de la lecture de l\entree keys !'); 
	
	// Creation d'un tableau associatif
	
	if ($keys)
		foreach ($keys as $k) {
			$arrK = split(", ",$k);
			foreach($arrK as $K){
				$tags[$K] += 1;
			}
		}
	else
		exit('Echec lors de la recuperation des tags');
	
	if (!$tags)
		exit('Echec lors du traitement des tags');
		
	
	// Trier ou mettre le hasard

	ksort($tags);	
	
	/* Partie SVG */
	
	// Métadonnées

	header("Content-type: image/svg+xml"); 
	echo "<?xml version=\"1.0\" standalone=\"no\"?>
			<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\"
				\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">";
				
	// Ouverture de la balise svg et définition de ses caractéristiques
	
	echo "
			<svg width=\"100%\" height=\"100%\" version=\"1.1\" viewBox=\"0 0 1200 1200\" preserveAspectRatio=\"xMidyMid meet\" xmlns=\"http://www.w3.org/2000/svg\">";
	
	
	// Informations sur le svg
	
	echo "
				<title>Brocode: Tagcloud</title>
				<desc>This is a tagcloud coming from an xml version of the Bro Code.</desc>";
	
	// Gérer les sauts de ligne
			
	echo "
				<text x=\"20px\" y=\"30px\" style=\"font-family:Courier;font-size:20px;\">";
				
	$decal_y = 00;
	$decal_x = 20;
	
	$hauteur_tag_max = 0;
	
	$couleurs = array("crimson", "saddlebrown", "seagreen", "burlywood", "indigo", "slategray"); // Je me suis permis des couleurs exotiques, voir à en mettre plus ou moins ?
	$i = 0;
						
	foreach ($tags as $key => $value) {
	
		// Calculer la taille du tag, avec chaque lettre ayant un indice fixe
				
		$largeur_tag = strlen($key) * 12 * $value;
		$hauteur_tag = 16 * $value;
		
		// Régler les paramètres
		
		$decal_x += $largeur_tag;
				
		// Si on dépasse la ligne imaginaire en inscrivant ce tag
		if ($decal_x >= 1200) {
			
			// Réinitialise la taille de la ligne au début et sauter une ligne
			$decal_x = $largeur_tag + 20;
			$decal_y += $hauteur_tag_max + 20;
			$hauteur_tag_max = 0;
		}
		
		if ($hauteur_tag > $hauteur_tag_max)
			$hauteur_tag_max = $hauteur_tag; // nous sert pour éviter les collisions de tags

					
		echo "
					<tspan x=\"".($decal_x - $largeur_tag)."px\" y=\"".($decal_y + $hauteur_tag)."px\" style=\"font-size:".($value * 20)."px;\" fill=\"".$couleurs[$i]."\">
						$key
					</tspan>";
		$i++;
			
		if ($i >= count($couleurs))
			$i = 0;
					
	}	
	
	echo "			
				</text>";
	
	// Fermeture de la balise svg
	
	echo "
			</svg>";
				
				
?>